﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace TripVoyage
{
    [ServiceContract]
    public interface IQPlan
    {
        //权限相关
        [OperationContract]
        string Account();
        [OperationContract]
        bool InIssuer();
        [OperationContract]
        short InSale(bool book);
        [OperationContract]
        bool InCenter();
        [OperationContract]
        short InBranch(bool branch);
        [OperationContract]
        short InShip(bool ship);
        [OperationContract]
        bool InGovern();

        //字典，供CheckBox使用
        [OperationContract]
        Dictionary<short, string> DicAgent();
        [OperationContract]
        Dictionary<string, string> DicAclerk(short Amx);
        [OperationContract]
        Dictionary<string, string> DicYFirm();
        [OperationContract]
        Dictionary<string, string> DicWFirm();
        [OperationContract]
        Dictionary<string, string> DicAFirm();
        //根据船舶或航线筛选另外一个
        [OperationContract]
        Dictionary<short, string> DicOutYC(short Ymx, short Cmx);
        //根据航线得到该航线包含的全部码头字典
        [OperationContract]
        Dictionary<int, short> GetWharfDicByCmx(short Cmx);
        //根据航次得到该航线包含的全部码头字典
        [OperationContract]
        Dictionary<int, short> GetVoyageWharfDicByVnx(int Vnx);

        [OperationContract]
        string GetFullCourseByVnx(int Vnx);

        [OperationContract]
        string GetFullCourseByCmx(short Cmx);

        //检测票证号用于哪种类型的售票
        [OperationContract]
        string CheckLabelOut(int Pnx);

        [OperationContract]
        List<AgentClass> GetAgent();
        [OperationContract]
        List<AclerkClass> GetAclerk(short Amx);
        [OperationContract]
        List<QuseClass> GetQuse(short Amx);
        [OperationContract]
        List<WharfClass> GetWharf();
        [OperationContract]
        List<WclerkClass> GetWclerk(short Wmx);
        [OperationContract]
        List<YachtClass> GetYacht();
        [OperationContract]
        List<GradeClass> GetGrade(short Ymx);
        [OperationContract]
        List<CabinClass> GetCabin(short Ymx);
        [OperationContract]
        List<MotypeClass> GetMotype(short Ymx);
        [OperationContract]
        List<CourseClass> GetCourse();
        [OperationContract]
        List<FinishClass> GetFinish(short Cmx);
        [OperationContract]
        List<BustopClass> GetBustop();
        [OperationContract]
        List<StopriceClass> GetStoprice(short Wmx, short Ymx, short Bmx);
        [OperationContract]
        List<LinerClass> GetLiner(short Cmx, short Ymx);
        [OperationContract]
        List<ShiproxyClass> GetShiproxy(short Cmx, short Ymx, short Amx);
        [OperationContract]
        List<ShipageClass> GetShipage(short Ymx, short Amx);
        [OperationContract]
        List<ShiportClass> GetShiport(short Ymx, short Wmx);
        [OperationContract]
        List<AllotClass> GetAllot(short Cmx, short Ymx, short Amx);
        [OperationContract]
        List<GPriceClass> GetGPrice(short Cmx, short Ymx);
        [OperationContract]
        List<GFareClass> GetGFare(int Vnx);
        [OperationContract]
        List<MPriceClass> GetMPrice(short Cmx, short Ymx);
        [OperationContract]
        List<MFareClass> GetMFare(int Vnx);
        [OperationContract]
        List<LBunkClass> GetLBunk(short Cmx, short Ymx);
        [OperationContract]
        int GetLBunkCount(short Cmx, short Ymx, int Ver);
        [OperationContract]
        List<VoyageClass> GetVoyage(string LeaveTime, short Wmx, short Ymx);
        [OperationContract]
        List<PubVoyageClass> GetPubVoyage(string LeaveTime);
        [OperationContract]
        List<VoyagentClass> GetVoyagent(int Vnx);
        [OperationContract]
        List<WharfromClass> GetWharfrom(int Vnx);
        [OperationContract]
        List<WharfinyClass> GetWharfiny(int Fnx);
        [OperationContract]
        List<StoplaceClass> GetStoplace(int Vnx);
        [OperationContract]
        List<CBMapClass> GetCBMap(int Vnx);
        [OperationContract]
        List<SelloutClass> GetSellout(int Pnx, int Tnx, string Stime, int Vnx);
        [OperationContract]
        List<BookeepClass> GetBookeep(string Stime, int Vnx);
        [OperationContract]
        List<LuggoutClass> GetLuggout(int Pnx, string Stime, int Vnx);
        [OperationContract]
        List<RolloutClass> GetRollout(int Pnx, string Stime, int Vnx);
        [OperationContract]
        List<VolumnClass> GetVolumn(string Account);
        [OperationContract]
        List<VpageClass> GetVpage(int Lnx);
        [OperationContract]
        List<VallotClass> GetVallot(int Vnx);
        [OperationContract]
        List<AllotMapClass> GetAllotMap(short Cmx, short Ymx);
        [OperationContract]
        List<VoyageStatusClass> GetVoyageStatus(int Vnx);

        [OperationContract]
        List<MatrixClass> GetMatrix(string TypeName,string Key);
        [OperationContract]
        Dictionary<short, string> GetWharfromDicByVnx(int Vnx);
        [OperationContract]
        List<DaySelloutClass> GetDaySellout(short Amx, string OutDay, string Account);
        [OperationContract]
        List<DayRolloutClass> GetDayRollout(short Amx, string OutDay, string Account);
        [OperationContract]
        List<DayLuggoutClass> GetDayLuggout(short Amx, string OutDay, string Account);
        [OperationContract]
        List<MonSelloutClass> GetMonSellout(short Amx, string DayFrom, string DayTo);
        [OperationContract]
        List<MonRolloutClass> GetMonRollout(short Amx, string DayFrom, string DayTo);
        [OperationContract]
        List<MonLuggoutClass> GetMonLuggout(short Amx, string DayFrom, string DayTo);

        [OperationContract]
        List<MonSellrefClass> GetMonSellref(short Amx, string DayFrom, string DayTo);
        [OperationContract]
        List<MonLuggrefClass> GetMonLuggref(short Amx, string DayFrom, string DayTo);
        [OperationContract]
        List<MonRollrefClass> GetMonRollref(short Amx, string DayFrom, string DayTo);
        

    }

    [DataContract(Namespace = "TripVoyage")]
    public class MonLuggrefClass : MonRefClass
    {
    }
    [DataContract(Namespace = "TripVoyage")]
    public class MonRollrefClass : MonRefClass
    {
    }
    [DataContract(Namespace = "TripVoyage")]
    public class MonSellrefClass : MonRefClass
    {
        //Local：退自售票；Other：退异地票
        //Full：全退；Half：按章退票
        //Count：数量；Price：票款；Fee：手续费
        [DataMember]
        public int LocalFullRefCount { get; set; }
        [DataMember]
        public float LocalFullRefPrice { get; set; }
        [DataMember]
        public int LocalHalfRefCount { get; set; }
        [DataMember]
        public float LocalHalfRefPrice { get; set; }
        [DataMember]
        public float LocalHalfRefFee { get; set; }
        [DataMember]
        public int OtherFullRefCount { get; set; }
        [DataMember]
        public float OtherFullRefPrice { get; set; }
        [DataMember]
        public int OtherHalfRefCount { get; set; }
        [DataMember]
        public float OtherHalfRefPrice { get; set; }
        [DataMember]
        public float OtherHalfRefFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MonRefClass : RefClass
    {
        [DataMember]
        public string RefDate { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class DayRefClass : RefClass
    {
        [DataMember]
        public string RClerk { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class RefClass : ResultBase
    {
        [DataMember]
        public int FullRefCount { get; set; }
        [DataMember]
        public float FullRefPrice { get; set; }
        [DataMember]
        public int HalfRefCount { get; set; }
        [DataMember]
        public float HalfRefPrice { get; set; }
        [DataMember]
        public float HalfRefFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MonLuggoutClass : MonOutClass
    {
    }
    [DataContract(Namespace = "TripVoyage")]
    public class MonRolloutClass : MonOutClass
    {
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MonSelloutClass : MonOutClass
    {
        [DataMember]
        public int FitOutCount { get; set; }
        [DataMember]
        public float FitOutFee { get; set; }
        [DataMember]
        public int FitRtnCount { get; set; }
        [DataMember]
        public float FitRtnFee { get; set; }
        [DataMember]
        public int FitAnlCount { get; set; }
        [DataMember]
        public int BookNumOut { get; set; }
        [DataMember]
        public int BookNumRtn { get; set; }
        [DataMember]
        public int BookCount { get; set; }
        [DataMember]
        public float BookFee { get; set; }
        [DataMember]
        public float BookPlus { get; set; }
        [DataMember]
        public int BookRtnCount { get; set; }
        [DataMember]
        public float BookRtnFee { get; set; }
        //用于显示
        [DataMember]
        public string FitOut { get; set; }
        [DataMember]
        public string FitRtn { get; set; }
        [DataMember]
        public string BookOut { get; set; }
        [DataMember]
        public string BookRtn { get; set; }
        [DataMember]
        public string BookNum { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class DayLuggoutClass : DayOutClass
    {
    }
    [DataContract(Namespace = "TripVoyage")]
    public class DayRolloutClass : DayOutClass
    {
    }

    [DataContract(Namespace = "TripVoyage")]
    public class DaySelloutClass : DayOutClass
    {
        [DataMember]
        public int FitOutCount { get; set; }
        [DataMember]
        public float FitOutFee { get; set; }
        [DataMember]
        public int FitRtnCount { get; set; }
        [DataMember]
        public float FitRtnFee { get; set; }
        [DataMember]
        public int FitAnlCount { get; set; }
        [DataMember]
        public int BookNumOut { get; set; }
        [DataMember]
        public int BookNumRtn { get; set; }
        [DataMember]
        public int BookCount { get; set; }
        [DataMember]
        public float BookFee { get; set; }
        [DataMember]
        public float BookPlus { get; set; }
        [DataMember]
        public int BookRtnCount { get; set; }
        [DataMember]
        public float BookRtnFee { get; set; }
        //用于显示
        [DataMember]
        public string FitOut { get; set; }
        [DataMember]
        public string FitRtn { get; set; }
        [DataMember]
        public string BookOut { get; set; }
        [DataMember]
        public string BookRtn { get; set; }
        [DataMember]
        public string BookNum { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MonOutClass : OutClass
    {
        [DataMember]
        public string OutDate { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class DayOutClass : OutClass
    {
        [DataMember]
        public string SClerk { get; set; }
        [DataMember]
        public string OneVabel { get; set; }
        [DataMember]
        public string EndVabel { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class OutClass : ResultBase
    {
        [DataMember]
        public int OutCount { get; set; }
        [DataMember]
        public float OutFee { get; set; }
        [DataMember]
        public int RtnCount { get; set; }
        [DataMember]
        public float RtnFee { get; set; }
        [DataMember]
        public int AnlCount { get; set; }
        //用于显示
        [DataMember]
        public string Out { get; set; }
        [DataMember]
        public string Rtn { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MatrixClass : ResultBase
    {
        [DataMember]
        public string XName { get; set; }
        [DataMember]
        public string YName { get; set; }
        [DataMember]
        public float Cross { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VallotClass : CYClass
    {
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string UName { get; set; }
        [DataMember]
        public short First { get; set; }
        [DataMember]
        public short Last { get; set; }
        [DataMember]
        public int QuseCount { get; set; }
        [DataMember]
        public string Flag { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VpageClass : ResultBase
    {
        [DataMember]
        public int Pnx { get; set; }
        [DataMember]
        public string Pos { get; set; }
        [DataMember]
        public bool Scrap { get; set; }
        [DataMember]
        public bool Used { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VolumnClass : ResultBase
    {
        [DataMember]
        public int Lnx { get; set; }
        [DataMember]
        public short Amx { get; set; }
        [DataMember]
        public string AName { get; set; }
        [DataMember]
        public string Acnt { get; set; }
        [DataMember]
        public string Aclerk { get; set; }
        [DataMember]
        public string Draw { get; set; }
        [DataMember]
        public string Vabel { get; set; }
        [DataMember]
        public bool Ready { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class RolloutClass : TicketClass
    {
        //载车票信息
        [DataMember]
        public string MType { get; set; }
        [DataMember]
        public string Checker { get; set; }
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float Plus { get; set; }
        [DataMember]
        public string Plate { get; set; }
        [DataMember]
        public string Vabel { get; set; }
        [DataMember]
        public float Price { get; set; }
        [DataMember]
        public float Refund { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class LuggoutClass : TicketClass
    {
        //行李票信息
        [DataMember]
        public string Checker { get; set; }
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float Heft { get; set; }
        //售票信息
        [DataMember]
        public string Vabel { get; set; }
        [DataMember]
        public float Price { get; set; }
        [DataMember]
        public float Refund { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class BookeepClass : SelloutClass
    {
        //订单信息，配票内容一起显示
        [DataMember]
        public int Knx { get; set; }
        [DataMember]
        public string Custom { get; set; }
        [DataMember]
        public string Phone { get; set; }
        [DataMember]
        public short KAmx { get; set; }
        [DataMember]
        public string KAgent { get; set; }
        [DataMember]
        public string Kclerk { get; set; }
        [DataMember]
        public string Ktime { get; set; }
        [DataMember]
        public string Atime { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class SelloutClass : TicketClass
    {
        [DataMember]
        public int Snx { get; set; }
        //等级票信息
        [DataMember]
        public string Grade { get; set; }
        [DataMember]
        public string Cabin { get; set; }
        [DataMember]
        public short Bnum { get; set; }
        [DataMember]
        public string Price { get; set; }
        [DataMember]
        public float Discnt { get; set; }
        //售票信息
        [DataMember]
        public string Vabel { get; set; }
        //退抹票信息
        [DataMember]
        public string RAgent { get; set; }
        [DataMember]
        public string Rclerk { get; set; }
        [DataMember]
        public float Refund { get; set; }
        [DataMember]
        public bool HasBookFee { get; set; }
        //YGCB：船舶-等级-舱室-铺位，用于显示
        [DataMember]
        public string YGCB { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class TicketClass : CYClass
    {
        //CYClass中包含航线、船舶的主键和名称
        //COF：航线-起点-终点，用于显示
        [DataMember]
        public string COF { get; set; }
        //售票类型（售、抹、退）
        [DataMember]
        public string SaleType { get; set; }
        //航段信息
        [DataMember]
        public int Vnx { get; set; }
        [DataMember]
        public string Vnum { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
        //订售票基本信息
        [DataMember]
        public short SAmx { get; set; }
        [DataMember]
        public string SAgent { get; set; }
        [DataMember]
        public string Sclerk { get; set; }
        [DataMember]
        public string Stime { get; set; }
        //退抹票基本信息
        [DataMember]
        public string Rtime { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class AllotMapClass : ResultBase
    {
        [DataMember]
        public short Gmx { get; set; }
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string IName { get; set; }
        [DataMember]
        public short Bnum { get; set; }
        //ulong：18，446，744，073，709，551，615。
        //最大可以表示17航段的航线，每一段最多被9个留额用途覆盖的情况
        //即：17，099，999，999，999，999，999
        [DataMember]
        public ulong SectQuse { get; set; }
        [DataMember]
        public string AgentQuse { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class CBMapClass : ResultBase
    {
        [DataMember]
        public int Tnx { get; set; }
        [DataMember]
        public short Gmx { get; set; }
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string CName { get; set; }
        [DataMember]
        public short Bnum { get; set; }
        [DataMember]
        public string Mask { get; set; }
        [DataMember]
        public bool Ready { get; set; }
        //ulong：18，446，744，073，709，551，615。
        //最大可以表示17航段的航线，每一段最多被9个留额用途覆盖的情况
        //即：17，099，999，999，999，999，999
        [DataMember]
        public ulong SectQuse { get; set; }
        [DataMember]
        public string AgentQuse { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class StoplaceClass : ResultBase
    {
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string BName { get; set; }
        [DataMember]
        public string Leave { get; set; }
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float Stopay { get; set; }
        [DataMember]
        public float Extras { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VoyageStatusClass : ResultBase
    {
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
        [DataMember]
        public string Flag { get; set; }
        [DataMember]
        public int PrimeCount { get; set; }
        [DataMember]
        public int QuseCount { get; set; }
        [DataMember]
        public string BookCount { get; set; }
        [DataMember]
        public string SellCount { get; set; }
        [DataMember]
        public int RestCount { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class WharfinyClass : ResultBase
    {
        [DataMember]
        public string DestW { get; set; }
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float LuggFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class WharfromClass : ResultBase
    {
        [DataMember]
        public int Fnx { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string Leave { get; set; }
        [DataMember]
        public string Delay { get; set; }
        [DataMember]
        public string Topn { get; set; }
        [DataMember]
        public bool Ready { get; set; }
        [DataMember]
        public float Wharfee { get; set; }
        [DataMember]
        public float Wfee { get; set; }
        [DataMember]
        public float Busfee { get; set; }
        [DataMember]
        public float Extras { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VoyagentClass : ResultBase
    {
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string AName { get; set; }
        [DataMember]
        public string Tdwn { get; set; }
        [DataMember]
        public string Qdwn { get; set; }
        [DataMember]
        public string Rdwn { get; set; }
        [DataMember]
        public bool Tbag { get; set; }
        [DataMember]
        public bool Tcar { get; set; }
        [DataMember]
        public bool Retn { get; set; }
        [DataMember]
        public bool RetX { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class PubVoyageClass : CYClass
    {
        [DataMember]
        public string FullCourse { get; set; }
        [DataMember]
        public bool Sail { get; set; }
        [DataMember]
        public bool Sell { get; set; }
        [DataMember]
        public string Leave { get; set; }
        [DataMember]
        public int SellCount { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class VoyageClass : CYClass
    {
        [DataMember]
        public int Vnx { get; set; }
        [DataMember]
        public int Vnum { get; set; }
        [DataMember]
        public bool Sail { get; set; }
        [DataMember]
        public bool Sell { get; set; }
        [DataMember]
        public string Pver { get; set; }
        [DataMember]
        public string Bver { get; set; }
        [DataMember]
        public string Mver { get; set; }
        [DataMember]
        public float BookFee { get; set; }
        [DataMember]
        public float Rate { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class LBunkClass : CYClass
    {
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string IName { get; set; }
        [DataMember]
        public short Bnum { get; set; }
        [DataMember]
        public bool Ver1 { get; set; }
        [DataMember]
        public bool Ver2 { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MFareClass : MPClass
    {
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float Rate { get; set; }
        [DataMember]
        public float RollFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MPriceClass : MPClass
    {
        [DataMember]
        public float Fare1 { get; set; }
        [DataMember]
        public float Fare2 { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class GFareClass : GPClass
    {
        [DataMember]
        public float Fare { get; set; }
        [DataMember]
        public float Discnt { get; set; }
        [DataMember]
        public float Rate { get; set; }
        [DataMember]
        public float BunkFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class GPriceClass : GPClass
    {
        [DataMember]
        public float Fare1 { get; set; }
        [DataMember]
        public float Fare2 { get; set; }
        [DataMember]
        public float Fare3 { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MPClass : PriceClass
    {
        [DataMember]
        public short Tmx { get; set; }
        [DataMember]
        public string TName { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class GPClass : PriceClass
    {
        [DataMember]
        public short Gmx { get; set; }
        [DataMember]
        public string GName { get; set; }
    }
    [DataContract(Namespace = "TripVoyage")]
    public class PriceClass : CYClass
    {
        [DataMember]
        public string SectID { get; set; }
        [DataMember]
        public string SectName { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
        [DataMember]
        public string Totem { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class AllotClass : ResultBase
    {
        [DataMember]
        public string CY { get; set; }
        [DataMember]
        public string CYName { get; set; }
        [DataMember]
        public string Amx { get; set; }
        [DataMember]
        public string AName { get; set; }
        [DataMember]
        public string UName { get; set; }
        [DataMember]
        public short Gmx { get; set; }
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
        [DataMember]
        public string Totem { get; set; }
        [DataMember]
        public short First { get; set; }
        [DataMember]
        public short Last { get; set; }
        [DataMember]
        public int QuseCount { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class ShiproxyClass : CYClass
    {
        [DataMember]
        public short Amx { get; set; }
        [DataMember]
        public string OName { get; set; }
        [DataMember]
        public string AName { get; set; }
        [DataMember]
        public bool Tbag { get; set; }
        [DataMember]
        public bool Tcar { get; set; }
        [DataMember]
        public bool Retn { get; set; }
        [DataMember]
        public bool Book { get; set; }
        [DataMember]
        public string Tdwn { get; set; }
        [DataMember]
        public string Qdwn { get; set; }
        [DataMember]
        public string Rdwn { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class ShipageClass : ResultBase
    {
        [DataMember]
        public short Amx { get; set; }
        [DataMember]
        public string AName { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public string YName { get; set; }
        [DataMember]
        public float SellRate { get; set; }
        [DataMember]
        public float RetnRate { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class ShiportClass : ResultBase
    {
        [DataMember]
        public short Wmx { get; set; }
        [DataMember]
        public string WName { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public string YName { get; set; }
        [DataMember]
        public float Stopay { get; set; }
        [DataMember]
        public float Busfee { get; set; }
        [DataMember]
        public float DockRate { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class LinerClass : CYClass
    {
        [DataMember]
        public string Preact { get; set; }
        [DataMember]
        public string Topn { get; set; }
        [DataMember]
        public float BookFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class StopriceClass : ResultBase
    {
        [DataMember]
        public short Wmx { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public short Bmx { get; set; }
        [DataMember]
        public string WName { get; set; }
        [DataMember]
        public string YName { get; set; }
        [DataMember]
        public string BName { get; set; }
        [DataMember]
        public float Fare1 { get; set; }
        [DataMember]
        public float Fare2 { get; set; }
        [DataMember]
        public string Toggle { get; set; }
        [DataMember]
        public string To2 { get; set; }
        [DataMember]
        public float Stopay { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class FinishClass : ResultBase
    {
        [DataMember]
        public short Fmx { get; set; }
        [DataMember]
        public short Cmx { get; set; }
        [DataMember]
        public string FromW { get; set; }
        [DataMember]
        public string DestW { get; set; }
        [DataMember]
        public float Fare1 { get; set; }
        [DataMember]
        public float Fare2 { get; set; }
        [DataMember]
        public string Totem { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class MotypeClass : E1Class
    {
        [DataMember]
        public short Tmx { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public float RollFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class BustopClass : FirmClass
    {
        [DataMember]
        public short Bmx { get; set; }
        [DataMember]
        public bool Ready { get; set; }
        [DataMember]
        public float Afee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class QuseClass : E1Class
    {
        [DataMember]
        public short Umx { get; set; }
        [DataMember]
        public short Amx { get; set; }
        [DataMember]
        public string AName { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class CourseClass : E1Class
    {
        [DataMember]
        public short Cmx { get; set; }
        [DataMember]
        public string FullCourse { get; set; }
        [DataMember]
        public string Toggle { get; set; }
        [DataMember]
        public string To2 { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class WclerkClass : ClerkClass
    {
        [DataMember]
        public short Wmx { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class AclerkClass : ClerkClass
    {
        [DataMember]
        public short Amx { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class CabinClass : E1Class
    {
        [DataMember]
        public string GName { get; set; }
        [DataMember]
        public short Cmx { get; set; }
        [DataMember]
        public short First { get; set; }
        [DataMember]
        public short Last { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class GradeClass : E1Class
    {
        [DataMember]
        public short Gmx { get; set; }
        [DataMember]
        public float Discnt { get; set; }
        [DataMember]
        public float Rate { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public float BunkFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class WharfClass : E3Class
    {
        [DataMember]
        public short Wmx { get; set; }
        [DataMember]
        public string City { get; set; }
        [DataMember]
        public string Gate { get; set; }
        [DataMember]
        public float Afee { get; set; }
        [DataMember]
        public float Wfee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class YachtClass : E3Class
    {
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public float LuggFee { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class AgentClass : E3Class
    {
        [DataMember]
        public short Amx { get; set; }
        [DataMember]
        public string Addr { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class E3Class : FirmClass
    {
        [DataMember]
        public bool Ready { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class FirmClass : ResultBase
    {
        [DataMember]
        public string Firm { get; set; }
        [DataMember]
        public string Nym { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class E1Class : ResultBase
    {
        [DataMember]
        public string Nym { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class ClerkClass : ResultBase
    {
        [DataMember]
        public string Acnt { get; set; }
        [DataMember]
        public string Display { get; set; }
        [DataMember]
        public bool Senior { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class CYClass : ResultBase
    {
        [DataMember]
        public short Cmx { get; set; }
        [DataMember]
        public short Ymx { get; set; }
        [DataMember]
        public string CName { get; set; }
        [DataMember]
        public string YName { get; set; }
    }

    [DataContract(Namespace = "TripVoyage")]
    public class ResultBase
    {
    }

}
